package com.snail.ron.design.factory.simple;

import com.snail.ron.design.factory.model.Keyboard;
import com.snail.ron.design.factory.model.impl.DellKeyboard;
import com.snail.ron.design.factory.model.impl.HPKeyboard;
import com.snail.ron.design.factory.model.impl.LenovoKeyboard;

/**
 * @author xueguoping
 * @desc: TODO 简单工厂
 * 缺点：
 *  简单工厂是具体的实现类，而非接口或者抽象类，getInstance()方法利用if-else创建并返回具体的键盘实例
 *  如果增加新的键盘子类，键盘工厂的创建方法中就要增加新的if-else。这种做法扩展性差，违背了开闭原则，也影响可读性。
 *
 *  所以，这种适用在业务比较简单，工厂类不会经常更改的情况
 * @date 2022/4/1409:53
 */
public class SimpleFactory {
    public Keyboard getInstance(int brand){
        switch (brand){
            case 1:return new HPKeyboard();
            case 2:return new DellKeyboard();
            case 3:return new LenovoKeyboard();
            default:return null;
        }
    }
}
